From: Jasper St. Pierre Date: Sun, 4 Nov 2012 15:53:23 +0000 (-0500) Subject: volume: Add smooth scrolling to adjust output volume X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~5183 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=8d4855f1008b9d0d9e579c0ac81fd2ce076c3faa;p=gnome-shell.git volume: Add smooth scrolling to adjust output volume Allow users to smoothly scroll on the volume indicator icon to adjust the volume. Do this by simply passing the scroll event to the slider inside the menu. https://bugzilla.gnome.org/show_bug.cgi?id=687573 --- diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index fd4b9280c..6bcc994a9 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -636,7 +636,7 @@ const PopupSliderMenuItem = new Lang.Class({ return true; }, - _onScrollEvent: function (actor, event) { + scroll: function(event) { let direction = event.get_scroll_direction(); let delta; @@ -655,10 +655,15 @@ const PopupSliderMenuItem = new Lang.Class({ } this._value = Math.min(Math.max(0, this._value + delta), 1); + this._slider.queue_repaint(); this.emit('value-changed', this._value); }, + _onScrollEvent: function(actor, event) { + this.scroll(event); + }, + _motionEvent: function(actor, event) { let absX, absY; [absX, absY] = event.get_coords(); diff --git a/js/ui/status/volume.js b/js/ui/status/volume.js index 99b003b6f..faccf8458 100644 --- a/js/ui/status/volume.js +++ b/js/ui/status/volume.js @@ -69,26 +69,8 @@ const VolumeMenu = new Lang.Class({ this._onControlStateChanged(); }, - scroll: function(direction) { - let currentVolume = this._output.volume; - - if (direction == Clutter.ScrollDirection.DOWN) { - let prev_muted = this._output.is_muted; - this._output.volume = Math.max(0, currentVolume - this._volumeMax * VOLUME_ADJUSTMENT_STEP); - if (this._output.volume < 1) { - this._output.volume = 0; - if (!prev_muted) - this._output.change_is_muted(true); - } - this._output.push_volume(); - } - else if (direction == Clutter.ScrollDirection.UP) { - this._output.volume = Math.min(this._volumeMax, currentVolume + this._volumeMax * VOLUME_ADJUSTMENT_STEP); - this._output.change_is_muted(false); - this._output.push_volume(); - } - - this._notifyVolumeChange(); + scroll: function(event) { + this._outputSlider.scroll(event); }, _onControlStateChanged: function() { @@ -279,6 +261,6 @@ const Indicator = new Lang.Class({ }, _onScrollEvent: function(actor, event) { - this._volumeMenu.scroll(event.get_scroll_direction()); + this._volumeMenu.scroll(event); } });